【MATLAB进阶】以Cell文件格式读写txt文件 您所在的位置:网站首页 Matlab cell转换为字符串 【MATLAB进阶】以Cell文件格式读写txt文件

【MATLAB进阶】以Cell文件格式读写txt文件

2024-03-15 07:50| 来源: 网络整理| 查看: 265

任务:

        在程序开始读入.txt文件中的参数值,在程序运行结束后将调整的参数存入这个txt文档中,以供下次使用。

实现:

1. 将参数存在txt文档,格式如下:

每行列出一个参数,并且以参数值、逗号、参数名的格式,即:“ [参数] ,  [参数名]  ”。

2. 从txt读取——函数fopen(filepath)、textscan(fileID, readformat)、fclose(fileID)

filename = 'paras.txt';%文件路径 fileID = fopen(filename);%在MATLAB后台打开文件 C = textscan(fileID,'%f %s ','Delimiter',',');%读。读取的C为1x2的cell格式数据 fclose(fileID);%读完后即关闭文件 D=[num2cell(C{1}),C{2}];%整理数据结构。(将读取的两列文件组成一个新的cell数据D)

读取操作主要用到了三个函数:

        fopen(filepath) —— 打开路径下的txt文档,打开后返回一个fileID,用此来操作打开的文档;

        textscan(fileID, readformat) ——matlab推荐的读取txt文档的函数,第一参数是上一步获得fileID;第二个参数是读取的格式,这里用到的格式是'%f %s','%f'表示读取浮点数值,'%s'表示读取字符串;第三个参数为可选格式类型( 'Delimiter', ',' ) ,表示浮点数值和字符串数值之间由','逗号间隔。当然读取的格式并不局限于此,更多的格式参照最后一部分“txt文件的格式”。

        fclose(fileID) —— 对文件操作完成后,关闭fileID指向的文件,此步非常必要,建议读取完成需要的内容后执行此步。防止程序意外中断后,文件无法进行修改和操作。

        通过以上,读取到一个cell类型的变量C,它由一个double类型的数组和一个cell类型的变量组成。

        为了方便后续对数据的修改,通过最后一行代码将C的结构重新整合成一个如下结构的cell变量D 👇。修改后的D在索引时和矩阵的索引方式相同,只是需要采用大括号,例如D{i, j}。

3. 修改参数并写入txt:

①采用函数writercell直接将D写入:

D{index,1}=value;%对由index索引行的参数进行修改 writecell(D,'paras.txt');%写入。此步不需要用fopen打开文件,直接将cell数据写入txt文件 % type(filename);%不用打开文件,在命令窗口打印txt文件内容。(此步并不是必须的)

②采用fprintf函数,逐个写入数据:

fileId=fopen('paras1.txt','wt');%以写入权限的方式打开文件 [m,n]=size(D); for i=1:m for j=1:n if j==n fprintf(fileId,'%s\n',D{i,j});%每行的第二个字符写入后利用\n回车 else fprintf(fileId,'%f,',D{i,j});%每行的数字写入后,后添加逗号,与后面的字符串相隔 end end end fclose(fileId);%关闭文件 txt文件的格式: C = textscan(fileID,'%s %n %n %n %n', 'Delimiter',',', 'TreatAsEmpty',{'NA','na'}, 'CommentStyle','//');

 '%s %n %n %n %n': 为字符的类型和排列方式。所有的类型有:

%d:有符号整数 %u:无符号整数 %f:浮点数 %s:字符串 %c:单个字符 %D:时间和日期 %n:自然数

'Delimiter':此项设置字符之间分割的符号,此处设置分割符号为:','

'TreatAsEmpty':此项设置视为空的字符,此处设置为{'NA','na'},即遇到'NA'或'na'时不读入

'CommentStyle':此项设置注释符号,此处设置为'//'双斜线,即双斜线之后的内容视为注释(也不读入)。

更多格式可以参考官方文档:https://ww2.mathworks.cn/help/matlab/ref/textscan.html

 

这里是童小喵,趟大家没趟的坑,写大家都爱看的文。欢迎点赞支持~喵~



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有